/**
 * 
 * @description
 * 基于bootstrap的弹出框，用于页面表单信息提示.
 * 提供四种不同状态的提示: XOMS.tip.error, XOMS.tip.success, XOMS.tip.info, XOMS.tip.warn
 * @author
 * @param {Object} {
 * 	title: 标题
 * 	content: 内容
 * 	type: 类型：失败:0, 成功:1, 提示信息:2, 警告:3; 默认2
 * 	hideType: 是否自动消失,默认true
 * 	delBtn: 是否显示关闭按钮,默认false
 * 	hideTime: 多久消失: slow:1.5s fast: 1s, 其他值可为数字,以毫秒为单位
 * }
 * @example 
 * 1. XOMS.tip.info('提示信息');
 * 2. XOMS.tip.info({title: '这是个提示', content: '提示信息'});
 */
define(['jquery', 'XOMS', 'bootstrap'], function($, XOMS) {
	var defaultOptoins = {
		// 标题
		title: null,
		// 内容
		content: null,
		// 类型：失败:0, 成功:1, 提示信息:2, 警告:3; 默认2
		type: 2,
		// 是否自动消失    
		hideType: true,
		// 是否显示关闭按钮
		delBtn: false,
		// 多久消失: slow:1.5s fast: 1s, 其他值可为数字,以毫秒为单位
		hideTime: 'slow',
	};
	
	XOMS.tip = {};
	
	var _createTip = function(options) {
		var _options = $.extend({}, defaultOptoins, options);
		
		// 将弹出框绑定到body上
		var $tip = $('body');
		
		var typeClass = 'xoms-popover-info';
		
		if(_options.type == '0') {
			// 失败
			typeClass = 'xoms-popover-error';
			defaultOptoins.hideType = false;
			defaultOptoins.delBtn = true;
		} else if(_options.type == '1') {
			// 成功
			typeClass = 'xoms-popover-success';
			defaultOptoins.hideType = true;
			defaultOptoins.delBtn = false;
		} else if(_options.type == '2') {
			// 提示
			typeClass = 'xoms-popover-info';
			defaultOptoins.hideType = true;
			defaultOptoins.delBtn = false;
		} else if(_options.type == '3') {
			// 警告
			typeClass = 'xoms-popover-warn';
			defaultOptoins.hideType = true;
			defaultOptoins.delBtn = false;
		}
		
		var delClass = _options.delBtn ? 'xoms-popover-del-show' : 'xoms-popover-del-hide';
		var template = '<div class="popover xoms-popover ' + typeClass + '" role="tooltip">' +
			'<div class="arrow"></div>' + 
			'<h3 class="popover-title">' + _options.title + '</h3>' + 
			'<div class="popover-content"></div>' + 
			'<button class="xoms-popover-del ' + delClass + ' close" type="button">'+ 
			'<span aria-hidden="true">&times;</span><span class="sr-only">Close</span>' + 
			'</button>' +
		'</div>';
		
		$tip.popover({
			animation: true,
			// 指定popover在body中生成
			container: 'body',
			content: _options.content,
			title: _options.title,
			// 动画的时间
//			delay: { "show": 2000, "hide": 10000 },
			placement: 'top',
			trigger: 'manual',
			template: template
		});
		$tip.popover('show');
		// 自动消失的事件
		var hideFn = function() {
			$tip.popover('destroy');
		};
		if(_options.hideType) {
			var tm = _options.hideTime;
			if(tm == 'slow') {
				tm = 1500;
			} else if(tm == 'fast') {
				tm == 1000;
			}
			setTimeout(hideFn, tm);
		}
		// 关闭按钮事件
		$tip.on('click', '.xoms-popover-del', function(e) {
			$tip.popover('destroy');
		});
		
		var bodyClick = function(e) {
			var $this = $(e.target);
			if(!$this.hasClass('popover-content') && $this.get(0).tagName != 'BUTTON') {
				$tip.popover('destroy');
			}
		};
		
		if(_options.type == 0) {
			$('body').on('click', bodyClick);
		} else {
			$('body').off('click',null,bodyClick);
		}
	};
	
	
	XOMS.tip = {};
	
	var _buildTip = function(type, options) {
		if(typeof options == 'string') {
			_createTip({type: type, content: options});
		} else {
			var _options = $.extend({}, options);
			_options.type = type;
			_createTip(_options);
		}
	};
	
	// 失败
	XOMS.tip.error = function(options) {
		_buildTip(0, options);
	};
	
	// 成功
	XOMS.tip.success = function(options) {
		_buildTip(1, options);
	};
	
	// 信息
	XOMS.tip.info = function(options) {
		_buildTip(2, options);
	};
	
	// 警告
	XOMS.tip.warn = function(options) {
		_buildTip(3, options);
	};
	
	return XOMS.tip;
});